﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WpfSnqkGasAnalysis.Model
{
    /// <summary>
    /// 转换方法扩展
    /// </summary>
    /// 创建时间：2022-12-7 10:45:34。作者：王浩力
    public static class ConvertHelpter
    {
        /// <summary>
        /// 将字符串转换为decimal，如果字符串不合法，返回0；
        /// </summary>
        /// <param name="value">字符串</param>
        /// <returns></returns>
        /// 创建时间：2022-12-7 10:45:34。作者：王浩力
        public static decimal? ToMyDecimal(this string value)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return null;
            }
            if (decimal.TryParse(value, out decimal result))
            {
                return result;
            }
            return 0;
        }

        /// <summary>
        /// 如果是空，处理为0
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        /// 创建时间：2023-1-15 21:13:02。作者：王浩力
        public static decimal ToMyDecimal2(this object value)
        {
            if (value == null || value is DBNull)
            {
                return 0;
            }
            if (decimal.TryParse(value.ToString(), out decimal result))
            {
                return result;
            }
            return 0;
        }

        /// <summary>
        /// 将对象转换为 decimal
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        ///  创建时间：2022-12-16 10:14:15。作者：王浩力
        public static decimal? ToMyDecimal(this object value)
        {
            if (value == null || value is DBNull)
            {
                return null;
            }
            if (string.IsNullOrWhiteSpace(Convert.ToString(value)))
            {
                return null;
            }
            if (decimal.TryParse(value.ToString(), out decimal result))
            {
                return result;
            }
            return 0;
        }

        /// <summary>
        /// 将对象转换为 long
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        /// 创建时间：2022-12-16 10:14:15。作者：王浩力
        public static long? ToMyInt64(this object value)
        {
            if (value == null || value is DBNull)
            {
                return null;
            }
            if (string.IsNullOrWhiteSpace(Convert.ToString(value)))
            {
                return null;
            }
            if (long.TryParse(value.ToString(), out long result))
            {
                return result;
            }
            return 0;
        }

        public static long? ToMyInt64T2(this object value)
        {
            if (value == null || value is DBNull)
            {
                return 0;
            }
            if (string.IsNullOrWhiteSpace(Convert.ToString(value)))
            {
                return 0;
            }
            if (long.TryParse(value.ToString(), out long result))
            {
                return result;
            }
            return 0;
        }

        /// <summary>
        /// 保留指定的小数位，返回字符串
        /// </summary>
        /// <param name="value">数字</param>
        /// <param name="digit">保留的小数位</param>
        /// <returns></returns>
        /// 创建时间：2023-2-7 13:56:03。作者：王浩力
        public static string ToKeepDecimal(this object value, int digit)
        {
            if (value == null || value is DBNull)
            {
                return "";
            }
            if (string.IsNullOrWhiteSpace(Convert.ToString(value)))
            {
                return "";
            }
            if (decimal.TryParse(value.ToString(), out decimal result))
            {
                //return Math.Round(result, digit).ToString();
                string fx = "F" + digit;
                return result.ToString(fx);
            }
            return value.ToString();
        }

    }
}
